home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 9825 / 9825.xpi / chrome / content / options.js < prev    next >
Text File  |  2009-10-13  |  9KB  |  265 lines

  1. //only used from options.xul
  2.  
  3. (function()
  4. {
  5.     var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  6.  
  7.     var DOM_VK_CANCEL = 3;
  8.     var DOM_VK_HELP = 6;
  9.     var DOM_VK_BACK_SPACE = 8;
  10.     var DOM_VK_TAB = 9;
  11.     var DOM_VK_CLEAR = 12;
  12.     var DOM_VK_RETURN = 13;
  13.     var DOM_VK_ENTER = 14;
  14.     var DOM_VK_SHIFT = 16;
  15.     var DOM_VK_CONTROL = 17;
  16.     var DOM_VK_ALT = 18;
  17.     var DOM_VK_PAUSE = 19;
  18.     var DOM_VK_CAPS_LOCK = 20;
  19.     var DOM_VK_ESCAPE = 27;
  20.     var DOM_VK_SPACE = 32;
  21.     var DOM_VK_PAGE_UP = 33;
  22.     var DOM_VK_PAGE_DOWN = 34;
  23.     var DOM_VK_END = 35;
  24.     var DOM_VK_HOME = 36;
  25.     var DOM_VK_LEFT = 37;
  26.     var DOM_VK_UP = 38;
  27.     var DOM_VK_RIGHT = 39;
  28.     var DOM_VK_DOWN = 40;
  29.     var DOM_VK_PRINTSCREEN = 44;
  30.     var DOM_VK_INSERT = 45;
  31.     var DOM_VK_DELETE = 46;
  32.     var DOM_VK_0 = 48;
  33.     var DOM_VK_1 = 49;
  34.     var DOM_VK_2 = 50;
  35.     var DOM_VK_3 = 51;
  36.     var DOM_VK_4 = 52;
  37.     var DOM_VK_5 = 53;
  38.     var DOM_VK_6 = 54;
  39.     var DOM_VK_7 = 55;
  40.     var DOM_VK_8 = 56;
  41.     var DOM_VK_9 = 57;
  42.     var DOM_VK_SEMICOLON = 59;
  43.     var DOM_VK_EQUALS = 61;
  44.     var DOM_VK_A = 65;
  45.     var DOM_VK_B = 66;
  46.     var DOM_VK_C = 67;
  47.     var DOM_VK_D = 68;
  48.     var DOM_VK_E = 69;
  49.     var DOM_VK_F = 70;
  50.     var DOM_VK_G = 71;
  51.     var DOM_VK_H = 72;
  52.     var DOM_VK_I = 73;
  53.     var DOM_VK_J = 74;
  54.     var DOM_VK_K = 75;
  55.     var DOM_VK_L = 76;
  56.     var DOM_VK_M = 77;
  57.     var DOM_VK_N = 78;
  58.     var DOM_VK_O = 79;
  59.     var DOM_VK_P = 80;
  60.     var DOM_VK_Q = 81;
  61.     var DOM_VK_R = 82;
  62.     var DOM_VK_S = 83;
  63.     var DOM_VK_T = 84;
  64.     var DOM_VK_U = 85;
  65.     var DOM_VK_V = 86;
  66.     var DOM_VK_W = 87;
  67.     var DOM_VK_X = 88;
  68.     var DOM_VK_Y = 89;
  69.     var DOM_VK_Z = 90;
  70.     var DOM_VK_CONTEXT_MENU = 93;
  71.     var DOM_VK_NUMPAD0 = 96;
  72.     var DOM_VK_NUMPAD1 = 97;
  73.     var DOM_VK_NUMPAD2 = 98;
  74.     var DOM_VK_NUMPAD3 = 99;
  75.     var DOM_VK_NUMPAD4 = 100;
  76.     var DOM_VK_NUMPAD5 = 101;
  77.     var DOM_VK_NUMPAD6 = 102;
  78.     var DOM_VK_NUMPAD7 = 103;
  79.     var DOM_VK_NUMPAD8 = 104;
  80.     var DOM_VK_NUMPAD9 = 105;
  81.     var DOM_VK_MULTIPLY = 106;
  82.     var DOM_VK_ADD = 107;
  83.     var DOM_VK_SEPARATOR = 108;
  84.     var DOM_VK_SUBTRACT = 109;
  85.     var DOM_VK_DECIMAL = 110;
  86.     var DOM_VK_DIVIDE = 111;
  87.     var DOM_VK_F1 = 112;
  88.     var DOM_VK_F2 = 113;
  89.     var DOM_VK_F3 = 114;
  90.     var DOM_VK_F4 = 115;
  91.     var DOM_VK_F5 = 116;
  92.     var DOM_VK_F6 = 117;
  93.     var DOM_VK_F7 = 118;
  94.     var DOM_VK_F8 = 119;
  95.     var DOM_VK_F9 = 120;
  96.     var DOM_VK_F10 = 121;
  97.     var DOM_VK_F11 = 122;
  98.     var DOM_VK_F12 = 123;
  99.     var DOM_VK_F13 = 124;
  100.     var DOM_VK_F14 = 125;
  101.     var DOM_VK_F15 = 126;
  102.     var DOM_VK_F16 = 127;
  103.     var DOM_VK_F17 = 128;
  104.     var DOM_VK_F18 = 129;
  105.     var DOM_VK_F19 = 130;
  106.     var DOM_VK_F20 = 131;
  107.     var DOM_VK_F21 = 132;
  108.     var DOM_VK_F22 = 133;
  109.     var DOM_VK_F23 = 134;
  110.     var DOM_VK_F24 = 135;
  111.     var DOM_VK_NUM_LOCK = 144;
  112.     var DOM_VK_SCROLL_LOCK = 145;
  113.     var DOM_VK_COMMA = 188;
  114.     var DOM_VK_PERIOD = 190;
  115.     var DOM_VK_SLASH = 191;
  116.     var DOM_VK_BACK_QUOTE = 192;
  117.     var DOM_VK_OPEN_BRACKET = 219;
  118.     var DOM_VK_BACK_SLASH = 220;
  119.     var DOM_VK_CLOSE_BRACKET = 221;
  120.     var DOM_VK_QUOTE = 222;
  121.     var DOM_VK_META = 224;
  122.  
  123.  
  124.     var keycodes = {};
  125.     keycodes[DOM_VK_SPACE] = ' ';
  126.     keycodes[DOM_VK_A] = 'a';
  127.     keycodes[DOM_VK_B] = 'b';
  128.     keycodes[DOM_VK_C] = 'c';
  129.     keycodes[DOM_VK_D] = 'd';
  130.     keycodes[DOM_VK_E] = 'e';
  131.     keycodes[DOM_VK_F] = 'f';
  132.     keycodes[DOM_VK_G] = 'g';
  133.     keycodes[DOM_VK_H] = 'h';
  134.     keycodes[DOM_VK_I] = 'i';
  135.     keycodes[DOM_VK_J] = 'j';
  136.     keycodes[DOM_VK_K] = 'k';
  137.     keycodes[DOM_VK_L] = 'l';
  138.     keycodes[DOM_VK_M] = 'm';
  139.     keycodes[DOM_VK_N] = 'n';
  140.     keycodes[DOM_VK_O] = 'o';
  141.     keycodes[DOM_VK_P] = 'p';
  142.     keycodes[DOM_VK_Q] = 'q';
  143.     keycodes[DOM_VK_R] = 'r';
  144.     keycodes[DOM_VK_S] = 's';
  145.     keycodes[DOM_VK_T] = 't';
  146.     keycodes[DOM_VK_U] = 'u';
  147.     keycodes[DOM_VK_V] = 'v';
  148.     keycodes[DOM_VK_W] = 'w';
  149.     keycodes[DOM_VK_X] = 'x';
  150.     keycodes[DOM_VK_Y] = 'y';
  151.     keycodes[DOM_VK_Z] = 'z';
  152.  
  153.     $(document).ready(function()
  154.     {
  155.         var strbundle = document.getElementById("smarterwiki_strings");
  156.         //alert(strbundle.getString("welcome"));
  157.         var click_to_change = strbundle.getString("click_to_change");
  158.         var must_include_modifiers = strbundle.getString("must_include_modifiers");
  159.         
  160.         var alt_key_name = strbundle.getString("alt_key_name");
  161.         var ctrl_key_name = strbundle.getString("ctrl_key_name");
  162.         var meta_key_name = strbundle.getString("meta_key_name");
  163.         var shift_key_name = strbundle.getString("shift_key_name");
  164.         var space_key_name = strbundle.getString("space_key_name");
  165.         
  166.         var translate_invoke_key = function(key)
  167.         {
  168.             return key.replace(/META/g, meta_key_name)
  169.                       .replace(/SHIFT/g, shift_key_name)
  170.                       .replace(/ALT/g, alt_key_name)
  171.                       .replace(/CTRL/g, ctrl_key_name)
  172.                       .replace(/SPACE/g, space_key_name);
  173.         };
  174.  
  175.         $("#shortcut-key-textbox").attr("value", 
  176.             translate_invoke_key(prefManager.getCharPref("extensions.smarterwiki.qlauncher_invoke_key")) + " " + click_to_change);
  177.         
  178.         //$("#shortcut-key-textbox").keypress(function(event)
  179.         $("#shortcut-key-textbox")[0].addEventListener("keydown", function(event)
  180.         {
  181.             event.preventDefault(); 
  182.             event.stopPropagation();
  183.             
  184.             var has_ctrl = event.ctrlKey;
  185.             var has_meta = event.metaKey;
  186.             var has_alt = event.altKey;
  187.             var has_shift = event.shiftKey;
  188.             var char = ""; // var char = String.fromCharCode(event.charCode);
  189.             if(event.keyCode in keycodes)
  190.             {
  191.                 char = keycodes[event.keyCode];
  192.             }
  193.  
  194.             if(!(has_ctrl || has_meta || has_alt || has_shift))
  195.             {
  196.                 $("#shortcut-key-textbox").attr("value", 
  197.                     must_include_modifiers);
  198.             }
  199.             else
  200.             {
  201.                 var shortcut_key_seq = "";
  202.                 if(has_ctrl) {
  203.                     shortcut_key_seq += "CTRL";
  204.                 }
  205.                 else if(has_meta) {//meta key is weird
  206.                     if(shortcut_key_seq)
  207.                     {
  208.                         shortcut_key_seq += "+";
  209.                     }
  210.                     shortcut_key_seq += "META";
  211.                 }
  212.                 if(has_alt) {
  213.                     if(shortcut_key_seq) {
  214.                         shortcut_key_seq += "+";
  215.                     }
  216.                     shortcut_key_seq += "ALT";
  217.                 }
  218.                 if(has_shift) {
  219.                     if(shortcut_key_seq) {
  220.                         shortcut_key_seq += "+";
  221.                     }
  222.                     shortcut_key_seq += "SHIFT";  
  223.                 }
  224.                 if(char != "") {
  225.                     if(shortcut_key_seq) {
  226.                         shortcut_key_seq += "+";
  227.                     }
  228.                     if(char == " ") {
  229.                         shortcut_key_seq += "SPACE";
  230.                     }
  231.                     else {
  232.                         shortcut_key_seq += char.toUpperCase();
  233.                     }
  234.                 }
  235.                 prefManager.setCharPref("extensions.smarterwiki.qlauncher_invoke_key", shortcut_key_seq);
  236.                 $("#shortcut-key-textbox").attr("value", translate_invoke_key(shortcut_key_seq) + " " + click_to_change);
  237.             }
  238.  
  239.             return false;
  240.         }, true);
  241.  
  242.         var set_qlauncher_controls_state = function()
  243.         {
  244.             $("#shortcut-key-textbox, #qlauncher-open-new-tab-checkbox").each(function()
  245.             {
  246.                 this.disabled = !$("#enable-qlauncher-checkbox").attr("checked");//jQuery bug causes set .attr to break XUL text input
  247.             });
  248.         };
  249.         set_qlauncher_controls_state();
  250.         $("#enable-qlauncher-checkbox")[0].addEventListener("click", set_qlauncher_controls_state
  251.         , false);
  252.  
  253.  
  254.         var set_popup_bubble_controls_state = function()
  255.         {
  256.             $("#popup-bubble-open-new-tab-checkbox, [class~=search-checkbox], #popup-bubble-force-single-row-checkbox").each(function()
  257.             {
  258.                 this.disabled = !$("#show-popup-bubble-checkbox").attr("checked");//jQuery bug causes set .attr to break XUL text input
  259.             });
  260.         };
  261.         set_popup_bubble_controls_state();
  262.         $("#show-popup-bubble-checkbox")[0].addEventListener("click", 
  263.         set_popup_bubble_controls_state, false);    
  264.     });
  265. }());